package com.itheima.health.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.health.common.PageBean;
import com.itheima.health.common.PageDto;
import com.itheima.health.mapper.CheckGroupAndCheckItemMapper;
import com.itheima.health.mapper.CheckItemMapper;
import com.itheima.health.model.dtos.AddCheckItemDto;
import com.itheima.health.model.dtos.UpdateCheckItemDto;
import com.itheima.health.model.entity.CheckItem;
import com.itheima.health.model.vos.CheckItemVo;
import com.itheima.health.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CheckItemServiceImpl implements CheckItemService {


    @Autowired
    private CheckItemMapper checkItemMapper;
    @Autowired
    private CheckGroupAndCheckItemMapper checkGroupAndCheckItemMapper;

    /**
     * 分页查询
     *
     * @param pageDto 页面参数
     * @return {@code PageBean<CheckItem> }
     */
    @Override
    public PageBean<CheckItem> findPage(PageDto pageDto) {
        PageHelper.startPage(pageDto.getCurrentPage(), pageDto.getPageSize());
        Page<CheckItem> page = checkItemMapper.page(pageDto.getQueryString());
        return new PageBean<>(page.getTotal(), page.getResult());
    }

    /**
     * 添加检查项
     *
     * @param dto dto
     */
    @Override
    public void addCheckItem(AddCheckItemDto dto) {
        CheckItem checkItem = BeanUtil.copyProperties(dto, CheckItem.class);
        checkItemMapper.addCheckItem(checkItem);
    }

    /**
     * 按id查找检查项目
     *
     * @param id id
     * @return {@code CheckItemVo }
     */
    @Override
    public CheckItemVo findCheckItemById(Integer id) {
        return checkItemMapper.findCheckItemById(id);
    }

    /**
     * 更新检查项目
     *
     * @param dto dto
     */
    @Override
    public void updateCheckItem(UpdateCheckItemDto dto) {
        CheckItem checkItem = BeanUtil.copyProperties(dto, CheckItem.class);
        checkItemMapper.updateCheckItem(checkItem);
    }

    /**
     * 按id删除检查项
     *
     * @param id id
     */
    @Override
    public void deleteCheckItemById(Integer id) {
        checkItemMapper.deleteCheckItemById(id);
    }

    /**
     * 查找所有检查项  供  检查组使用
     *
     * @return {@code List<CheckItemVo> }
     */
    @Override
    public List<CheckItemVo> findAllCheckItem() {
        return checkItemMapper.findAllCheckItem();
    }


    /**
     * 按检查组id查找检查项目id
     *
     * @param id id
     * @return {@code List<Integer> }
     */
    @Override
    public List<Integer> findCheckItemIdsByCheckGroupId(Integer id) {
        return checkGroupAndCheckItemMapper.selectByCheckGroupId(id);
    }
}
